home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
program
/
flinker.arc
/
FLINKER.MAN
next >
Wrap
Text File
|
1989-12-14
|
10KB
|
276 lines
**** FLINKER ****
V 3.2
An even faster PD-linker for GST format files
by Gottfried Ira Vienna, 12 Dec 89
( Based upon a program developed by Ingo Eichenseher )
( as published in "ST Computer" 3/88 )
German text first, as I prefer my mother tongue ...
I) Allgemeines Blabla
Nachdem ich endlich das Listing aus ST-Computer 3/88 abgetippt
(Adler-Suchsystem!!!) hatte und infolge etlicher Tippfehler gezwungen war,
den Programmtext näher zu betrachten, reifte dann die Erkenntnis ( wie
immer, wenn man fremde Programme studiert! ), daß es da etliches zu
verbessern gäbe. In den folgenden Monaten, jeweils so zwischen Nachtmahl
und Schlafengehen, fand sich ein Bug da, eine Inkonsistenz dort, und
mehrere geopferte Wochenenden brachten größere Straffungen im Code.
Das Ergebnis finde ich recht brauchbar, ...vielleicht Du auch ?!
Das leitet über zu den
II) Verbesserungen/Änderungen
gegenüber Ingos Original.
1. und wichtigstens: SPEEEEEEEED!!!
bei großen Programmen (>100kB) etwa 2mal flinker und
somit mehr als 6mal flinker als GST-Link!
2. BSS (UDATA) frißt beim Linken keinen Speicherplatz mehr.
Wem es Spaß macht, kann nun (leere) Gigabytes in die BSS stopfen.
3. '-WITH', '-LIST' und '-PROG' verwenden 'LNK', 'MAP' und 'PRG' als
Default-Extension.
4. 'Data'-Befehl in der Steuerdatei erlaubt (wie GST-Link).
Syntax:
DATA <dezimalzahl>[K]
Groß/Kleinschreibung ist unerheblich.
'K', falls vorhanden, multipliziert <value> mit 1024.
5. Prospero-Fortran-Kompilate lassen sich nun linken;
dazu waren ua. die Punkte 6 (?!?!?!?!) und 7 nötig.
( Nur mit Option '-NOSEC' !! )
6. 'XREF' an ungeraden Adressen zulässig.
7. Behandlung von Common-Sections nun korrekt (ein frommer Wunsch...).
8. 'Chunks', die gemeinsam eine 'Subsection' ausmachen liegen jetzt
dicht an dicht, ohne Füll-Bytes (wie GST-Link).
9. Option '-BUF 0' ist gültig. Allerdings werden dann die LIBRARYs
nicht mehr durchsucht, sondern im Ganzen dazugelinkt!
( Ist also in der Auswirkung ident zur Ersetzung aller
LIBRARYs durch INPUTs.)
10. Unauffindbare '.BIN'-Dateien brechen den Linkvorgang nicht
mehr ab.
11. Assemblierung einiger zeitkritischer Routinen (was ua. für
Punkt 1 verantwortlich ist) und ... und ... und ...
III) Und das war's auch schon.
Falls Du, geneigter Anwender, Dich genauso schlau fühlst wie zuvor, sei
die Lektüre des Artikels aus 'ST-Computer' 3/88 ans Herz gelegt, dessen
Kenntnis ich hier voraussetze. Ich bin ein lausig langsamer Tippsler und
und verbringe meine Nächte lieber mit anregenderen Dingen ( zB FLINKER
weiterzuentwickeln oder einen Code-Optimierer für Lattice-C... ) als
Abschreiben von Artikeln. Ansonsten einfach LINKER durch FLINKER ersetzen
und alles läuft wie gehabt, nur schneller.
Flüche, Wehklagen, Aufmunterungen, Liebeserklärungen uä. mehr an
Gottfried Ira
Peilgasse 51/19
A-1080 Wien
Es geht auch über Roberts Anschluß an E359205@AWITUW01.BITNET
E359205@AWITUW01.UNA.AT
MESSAROS@EUEV88.BITNET
MESSAROS@EUEV88.UNA.AT
PS. Wie üblich entzieht sich der Programmierer jeder Verantwortung.
Das Programm ist natürlich Public Domain. Wenn aber jemand glaubt, sich
zum Mäzen eines notleidenden PD-Autors aufschwingen zu müssen, soll's
mir auch recht sein...
And now the English text ...
I) Introduction
To start with, my knowledge of English is poor and my typewriting even
worse. Therefore I'll try to put it briefly.
This is an upgraded version of GSTLINK (or LINKER, or LD) a PD-program
intended as substitute for LINK by GST. (As distributed eg. with Lattice-C.)
FLINKER is 2 to 3 times faster ( when applied to >150kb programs ) than GSTLINK
which itself claims to be 3 times faster than the original LINK by GST.
If you are familiar with GSTLINK (as I hope) a small summary of
improvements will be sufficient.
II) Summary of Improvements over GSTLINK
1. .......... SPEEED!!!
2. FLINKER does no longer keep BSS (UDATA) in memory, which saves
space and speeds up the linking process.
3. Options '-WITH', '-LIST' and '-PROG' will use 'LNK', 'MAP' and
'PRG' as default extensions.
4. New control file command:
DATA <decimal value>[K] ( upper- or lowercase )
...will add <decimal value> bytes to BSS.
If added, 'K' will multiply <decimal value> by 1024.
5. '.BIN'-files output by the Prospero FORTRAN compiler will be
accepted by FLINKER. ( Sorry, option '-NOSEC' only! )
I have strong objections against FORTRAN, therefore I did not
much testing on this.
6. '-BUF 0' is now a legal option. If specified, libraries will be
included with any, even unreferenced, module. So all 'LIBRARY'
commands in the control file will have the effect of 'INPUT'
commands.
All other differences regard mostly the inner workings of FLINKER,
and probably will never be noticed.
III) Summary of Differences to LINK (original GST)
General Differences
FLINKER is a one-pass linker which holds all linked code in main memory.
It is optimized for use with GEMDOS, and will not produce absolute code,
(i.e. code that lives only at a fixed address). Several rarely used
features (with Lattice-C) are omitted.
Omitted Control File Commands
- 'EXTRACT ... FROM ...'
- 'SECTION ...'
- 'COMMON ...'
- 'OFFSET ...'
- 'DEFINE ...'
Omitted Command Line Options
- '-CRF'
- '-PAGELEN ...'
New Command Line Options
- '-SEC'
Sections named 'BSS' or 'UDATA' will be put into
GEMDOS Block Storage Section (which requires no disk space),
'DATA' into GEMDOS Data Section and all others into GEMDOS
Text Section.
- '-NOSEC'
All sections will be put into GEMDOS Text Section (like
LINK by GST). The file size of the executable program will
usually be longer than those produced with option '-SEC'.
- '-MEM <size>' ( 2 < <size> < 4000 )
Reserves <size> kbytes for program memory. Should be larger
than the expected size of the executable file. Too small <size>
will result in error 1.
- '-BUF <size>' ( <size> < 800 )
Reserves <size> kbytes for the module buffer. Should be larger
than the largest module within the files scanned by the
'LIBRARY' command. Too small <size> will result in error 9.
IV) How to Run FLINKER
Exactly like GSTLINK or LINKER or LD or whatever you called it.
Double-click on FLINKER.TTP and enter a command line with the following
format:
[<module> [<control> [<listing> [<program>]]]] {<option>}
where:
<option> = -WITH <control> |
-NOPROG | -PROG [<program>] |
-NOLIST | -LIST [<listing>] |
-NODEBUG | -DEBUG |
-NOSYM | -SYM |
-NOSEC | -SEC |
-MEM <size> | -BUF <size>
(options are case insensitive)
<module> file name of an object file ( default: <module>.BIN )
<control> file name of control file ( default: <module>.LNK )
<program> file name for program output ( default: <module>.PRG )
<listing> file name for listing output ( default: <module>.MAP )
<size> decimal number (kbytes)
Default options: -NOLIST -NODEBUG -NOSYM -NOSEC -MEM 100 -BUF 32
V